iT邦幫忙

2025 iThome 鐵人賽

DAY 8
3

嗨!歡迎回到上班族的命令列生存手冊。終於到了最後一位基礎三劍客— cat。前面幾個章節,我們已經蒐集到了手電筒(ls)、藍寶堅尼(cd),最後一個拼圖是放大鏡,前面章節提到 cat 指令,可以將文字檔案 (或者是任何可以用文字表達的) 印在螢幕上(Standard output)。

基本的用法

https://ithelp.ithome.com.tw/upload/images/20250922/20141615uUJnTg1M2e.png

一樣先看目前的目錄有什麼東西可以查看吧?下 $ ls,例如,我們想要看看這個 TaskSchedular.java,賣什麼藥。

https://ithelp.ithome.com.tw/upload/images/20250922/20141615jWVplf9MKk.png

$ cat TaskSchedular.java

按下 Enter,cat 就會將內容輸出到畫面上囉。同樣的,後面的檔案也是路徑,所以只要找得到檔案,都能被印出來。
指令像是這樣:$ cat <path> ,例如有個文件在子目錄裡面,可以像這樣直接印 $ cat firefox/140esr/readme.md 只要檔案存在,就能印出來。路徑的結構方式可以運用在 cd 章節學到的,印上一頁甚至前幾頁的文件。

https://ithelp.ithome.com.tw/upload/images/20250922/20141615IzvGzpalNq.png

$ cat -n TaskSchedular.java

加上 -n 就會一併印出行號囉。
就是這樣簡單好用的指令,不過一開始 cat 的功能似乎不是拿來印東西,突如其來的進入考古的環節。

前世今身

Cat 不是貓(別失望!),他是 Concatenate (連接) 的縮寫。本來是用來組合多個分裂後的檔案而使用的。打個比方,你有一個合法來源取得的小說電子檔案,但被分成每 20 行,存成一個獨立的檔案,分成: xaa.txtxab.txtxac.txtxad.txt,用 cat 就可以把他們黏回去。

$ cat xaa.txt xab.txt xac.txt xad.txt > output.txt

先不要管 > 是什麼,用心去感受應該就是前面那些檔案被輸出到 output.txt了。再試試 cat 把 output.txt 印出來驗證一下即可。

預覽長檔案

cat 來預覽超長的檔案,也不是這麼方便。這時突然殺出第四個指令要學:less。 別忘記三大天王總有四個人!基礎三劍客也不意外,有四位。

像這類的長文件,用 cat 來讀確實會比較辛苦,在命令列的環境下有一類型的軟體稱之為:pager,可以用分頁的方式呈現資料,提昇閱讀性。less 就是一種 pager。 用法跟 cat 類似,只要將檔案餵給 less 就會進入長文件預覽。
指令像是這樣:$ less <path>

$ less TaskSchedular.java

https://ithelp.ithome.com.tw/upload/images/20250922/20141615xFr4PWMyAM.png

一進入發現整個畫面都變成文件的瀏覽畫面,這裡是一些基礎的使用方式:

  • 往上倦動/往下捲動: 方向鍵,或是使用 j 往下捲動、k 往上捲動
    • 可以記 j 的圓勾勾在下面,所以是往下。先記起來,以後可能會用到。🫣
  • 離開: q

less 操作模式大致上相同(甚至連 less 自身的內頁都類似),讀者可以嘗試按下 h 會進入 less 說明頁面,操作方式相同。

https://ithelp.ithome.com.tw/upload/images/20250922/20141615upPwkEHb1E.png

$ less -N TaskSchedular.java

加上 -N (是大寫的 N!) 就會一併印出行號囉。

如何找文件內的內容

image-006.gif

瀏覽文字時難免會想直接搜尋看看有沒有提到某個關鍵字,在 less 開啟文件後,可以按下 / ,進入 pattern match 模式後,就可以直接打字輸入想找的內容。

  • 找下一個 Match: n
  • 找上一個 Match: N (沒錯,大小寫有不同的功能,也可以寫成 shift + n)

這個搜尋方式也可以稍微熟悉一下,以後會用到的。

如果有一天,你需要逆著印…

有另一個指令聽起來很鬧,叫做 tac,就是 cat 反過來寫。只要用這個指令,就能反向輸出到螢幕上。
舉個例子,這個 abc 檔案是這個樣子的,下 cat 會這樣印出來:

$ cat abc a b c
a
b
c

如果用了 tac,就會變成這個樣子:

$ tac abc c b a
c
b
a

東西誕生總是有他的理由,你也認識了一個酷酷的指令。

說明完四位三劍客之後,差不多該對你坦白了,其實你只需要閱讀下一個章節,差不多就能了解幾乎筆者介紹的所有指令。到底是什麼東西這麼神,下集待續。


上一篇
Day07 熟悉環境篇:我該去哪? 說明 cd 指令
系列文
上班族的命令列 (CLI) 生存手冊8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
adsfaaron
iT邦新手 5 級 ‧ 2025-09-22 12:33:55

竟然有 less tac 太實用啦!!!

0
AndyAWD
iT邦新手 2 級 ‧ 2025-09-22 22:28:11

我已經迫不及待想要看下一個章節了呢

0
AndyAWD
iT邦新手 2 級 ‧ 2025-09-22 22:28:12

我已經迫不及待想要看下一個章節了呢

我要留言

立即登入留言